package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.RoleBean;
import com.project.bean.UserBean;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户业务接口
 */
public interface IUserService {
    /**
     * 根据输入的用户账号和密码，登录用户。同时查询该用户的权限信息。登录成功后，记录登陆日志
     *
     * @param userName 用户名
     * @param pwd      用户密码
     * @return 用户对象
     */
    public UserBean login(String userName, String pwd);

    /**
     * 动态条件分页查询用户
     *
     * @param pageNO   页码
     * @param userName 用户名
     * @return 用户分页对象
     */
    public IPage<UserBean> cutByItem(Integer pageNO, String userName);

    /**
     * 1.根据用户id删除用户拥有的角色（中间表）
     * 2.再删除用户
     *
     * @param userId 用户id
     */
    public void del(Integer userId);

    /**
     * 根据用户id，查询用户信息，同时查询用户拥有的角色，以及用户拥有的权限。
     *
     *
     * @param userId 用户id
     * @return 用户对象
     */
    public UserBean findByUserId(Integer userId);

    /**
     * 根据用户id，修改用户角色
     *
     * @param userId         用户id
     * @param newRoleIdArray 用户新的角色id数组
     */
    public void updateRole(Integer userId, Integer[] newRoleIdArray);

    /**
     * 1.先添加用户信息
     * 2.再添加用户的拥有角色信息
     *
     * @param user        用户对象
     * @param roleIdArray 用户的拥有角色id数组
     */
    public void add(UserBean user, Integer[] roleIdArray);

    /**
     * 根据用户id，修改密码
     *
     * @param userId 用户id
     * @param newPwd 新密码
     */
    public void updatePwd(Integer userId, String newPwd);

    /**
     * 添加用户
     *
     * @param user 用户对象
     */
    public void addUser(UserBean user, Integer[] roleIdArray);

    /**
     * 登陆验证
     *
     * @param name 用户名
     * @return 用户对象
     */
    public UserBean findByName(String name);


}
